﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL


Public Class ctrlListaGruposAsegurables

    Private _llamador As frmMainMetro
    Private _ctrlNuevaFamilia As ctrlNuevaFamilia
    Private _RM As ResourceManager


    Public Sub SetIdioma()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        btnNuevo.Text = _RM.GetString("btnNuevo")
        btnEditar.Text = _RM.GetString("btnEditar")
        btnEliminar.Text = _RM.GetString("btnEliminar")

        tabPermisosAsignados.Text = _RM.GetString("strPermisosAsignados")

        advTreeGrupos.Columns("colFam_Codigo").Text = _RM.GetString("strCodigo")
        advTreeGrupos.Columns("colFam_Descrip").Text = _RM.GetString("strDescripcion")
        advTreeGrupos.Refresh()

        advTreePatentes.Columns("colFamiliaPatentes").Text = _RM.GetString("strDescripcion")
        advTreePatentes.Refresh()

        SetAyudaContextual()

    End Sub

    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property

    Public Sub CargarGrilla()
        Dim oFamilia As cFamilia
        Dim colObjetos As Collection
        Dim oNode As DevComponents.AdvTree.Node


        advTreeGrupos.BeginUpdate()

        advTreeGrupos.Nodes.Clear()

        Try
            colObjetos = GestorFamilia.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oFamilia In colObjetos

                    oNode = New DevComponents.AdvTree.Node

                    oNode.Tag = oFamilia.Fam_Codigo
                    oNode.Text = oFamilia.Fam_Codigo
                    oNode.Cells.Add(New DevComponents.AdvTree.Cell(oFamilia.Fam_Descrip))

                    advTreeGrupos.Nodes.Add(oNode)

                Next
            End If

        Catch ex As Excepciones.Medios_BusquedaFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        advTreeGrupos.EndUpdate()

        advTreeGrupos.Refresh()

    End Sub

    Public Sub CargarGrillaPatentes(oFamilia As cFamilia)
        Dim oPatente As cPatente
        Dim colObjetos As Collection
        Dim oNode As DevComponents.AdvTree.Node


        advTreePatentes.BeginUpdate()

        advTreePatentes.Nodes.Clear()

        Try
            colObjetos = GestorFamilia.Instance.ConsultarPatentes(oFamilia)

            If Not colObjetos Is Nothing Then

                For Each oPatente In colObjetos

                    oNode = New DevComponents.AdvTree.Node

                    oNode.CheckBoxVisible = True

                    oNode.Tag = oPatente.Pat_Codigo
                    oNode.Text = oPatente.Pat_Descripcion

                    oNode.Checked = oPatente.Checked

                    advTreePatentes.Nodes.Add(oNode)

                Next
            End If

        Catch ex As Excepciones.FamiliaFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        advTreePatentes.EndUpdate()

        advTreePatentes.Refresh()

    End Sub

    Private Sub btnEliminar_Click(sender As Object, e As EventArgs) Handles btnEliminar.Click
        Dim oAux As cFamilia = New cFamilia

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.AdminSeguridad)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            If Not advTreeGrupos.SelectedNode Is Nothing Then
                If MessageBox.Show("Confirma la eliminación del registro?", "Confirmar acción", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK Then
                    oAux.Fam_Codigo = Utils.Convert.ToInt16(advTreeGrupos.SelectedNode.Tag)

                    Try
                        GestorFamilia.Instance.Eliminar(oAux)
                        GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.SegFamiliaBaja))

                        _llamador.RefrescarGrillas()

                    Catch ex As Excepciones.FamiliaFalloBaja
                        Main.ManejarExcepcion(ex)
                    Catch ex As Exception
                        Main.ManejarExcepcion(ex)
                    End Try
                End If
            End If


        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub btnNuevo_Click(sender As Object, e As EventArgs) Handles btnNuevo.Click

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.AdminSeguridad)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            _llamador._ctrlNuevoFamilia.MostrarParaAlta()
            _llamador.ShowModalPanel(_llamador._ctrlNuevoFamilia, DevComponents.DotNetBar.Controls.eSlideSide.Left)
            _llamador.RefrescarGrillas()

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub btnEditar_Click(sender As Object, e As EventArgs) Handles btnEditar.Click
        Dim oAux As cFamilia

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.AdminSeguridad)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            If Not advTreeGrupos.SelectedNode Is Nothing Then
                Try
                    oAux = New cFamilia
                    oAux.Fam_Codigo = advTreeGrupos.SelectedNode.Tag
                    oAux = GestorFamilia.Instance.Buscar(oAux)

                    _llamador._ctrledicionGrupoAsegurables.MostrarParaEdicion(oAux)
                    _llamador.ShowModalPanel(_llamador._ctrledicionGrupoAsegurables, DevComponents.DotNetBar.Controls.eSlideSide.Left)


                Catch ex As Excepciones.FamiliaFalloBuscar
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try
            End If

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub advTreeGrupos_SelectedIndexChanged(sender As Object, e As EventArgs) Handles advTreeGrupos.SelectedIndexChanged
        Dim oFamilia As cFamilia

        If Not advTreeGrupos.SelectedNode Is Nothing Then
            oFamilia = New cFamilia
            oFamilia.Fam_Codigo = Utils.Convert.ToInt16(advTreeGrupos.SelectedNode.Tag)

            CargarGrillaPatentes(oFamilia)
        End If

    End Sub

    Private Sub advTreePatentes_AfterCheck(sender As Object, e As DevComponents.AdvTree.AdvTreeCellEventArgs) Handles advTreePatentes.AfterCheck
        Dim oFamilia As cFamilia
        Dim oPatente As cPatente


        If Not advTreeGrupos.SelectedNode Is Nothing Then
            oFamilia = New cFamilia
            oPatente = New cPatente

            oFamilia.Fam_Codigo = Utils.Convert.ToInt16(advTreeGrupos.SelectedNode.Tag)
            oPatente.Pat_Codigo = Utils.Convert.ToInt16(e.Cell.Parent.Tag)

            Try
                If e.Cell.Checked Then
                    GestorFamilia.Instance.Ingresar_Patente(oFamilia, oPatente)
                Else
                    GestorFamilia.Instance.Remover_Patente(oFamilia, oPatente)
                End If

            Catch ex As Excepciones.FamiliaFalloEditar
                Main.ManejarExcepcion(ex)
            Catch ex As Exception
                Main.ManejarExcepcion(ex)
            End Try

        End If

    End Sub

    Public Sub SetAyudaContextual()
        _RM = New ResourceManager("UI.AyudaContextual", System.Reflection.Assembly.GetExecutingAssembly)

        HelpProviderForm.SetHelpString(advTreeGrupos, "Lista de grupos de asegurables")
        HelpProviderForm.SetHelpString(advTreePatentes, "Lista de asegurables del sistema")

    End Sub

    Public Sub Inicializar()

        CargarGrilla()
        SetAyudaContextual()

    End Sub

End Class
